package com.agileboot.domain.performance.submission.db;

import com.agileboot.common.core.base.BaseEntity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import lombok.Getter;
import lombok.Setter;

/**
 * <p>
 * 绩效上报项表
 * </p>
 *
 * @since 2025-10-31
 */
@Getter
@Setter
@TableName("submissions")
@ApiModel(value = "SubmissionEntity对象", description = "绩效上报项表")
public class SubmissionEntity extends BaseEntity<SubmissionEntity> {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty("绩效上报项ID")
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;


    @ApiModelProperty("考核年度")
    @TableField("assessment_year")
    private Integer assessmentYear;

    @ApiModelProperty("一级分类")
    @TableField("main_category")
    private String mainCategory;

    @ApiModelProperty("二级分类")
    @TableField("sub_category")
    private String subCategory;

    @ApiModelProperty("三级分类")
    @TableField("item_category")
    private String itemCategory;

    @ApiModelProperty("成果名称")
    @TableField("title")
    private String title;

    @ApiModelProperty("成果详情 (JSON格式)")
    @TableField("details_json")
    private String detailsJson;

    @ApiModelProperty("分配详情")
    @TableField("allocation_details")
    private String allocationDetails;

    @ApiModelProperty("用户自报的成果总分")
    @TableField("user_reported_score")
    private Double userReportedScore;

    @ApiModelProperty("审核状态")
    @TableField("status")
    private String status;

    @ApiModelProperty("当前审核层级")
    @TableField("current_audit_level")
    private Integer currentAuditLevel;

    @ApiModelProperty("一审人姓名")
    @TableField("first_reviewer_name")
    private String firstReviewerName;

    @ApiModelProperty("一审时间")
    @TableField("first_review_time")
    private java.util.Date firstReviewTime;

    @ApiModelProperty("二审人姓名")
    @TableField("second_reviewer_name")
    private String secondReviewerName;

    @ApiModelProperty("二审时间")
    @TableField("second_review_time")
    private java.util.Date secondReviewTime;

    @ApiModelProperty("三审人姓名")
    @TableField("third_reviewer_name")
    private String thirdReviewerName;

    @ApiModelProperty("三审时间")
    @TableField("third_review_time")
    private java.util.Date thirdReviewTime;

    @ApiModelProperty("驳回理由")
    @TableField("rejection_reason")
    private String rejectionReason;

    @ApiModelProperty("证明材料列表")
    @TableField("fileList")
    private String fileList;

    @ApiModelProperty("归属人Id")
    @TableField("owner")
    private Integer owner;

    @ApiModelProperty("本人分数")
    @TableField("owner_score")
    private Double ownerScore;

    @ApiModelProperty("主项目id")
    @TableField("father_id")
    private Long fatherId;

    @Override
    public Serializable pkVal() {
        return this.id;
    }
}
